/**
 * @author Your Name
 * @version 1.0
 *
 * @description <p>EXCEL类封装了使用阿里巴巴开源EasyExcel库进行Excel文件读写操作的方法。</p>
 *
 * <p>该类提供了两个静态方法，分别用于将对象列表写入Excel文件和从Excel文件中读取对象列表。
 * 它们均支持泛型，能够处理任意类型的Java对象，只要这些对象的类实现了序列化接口（Serializable）。</p>
 *
 * <ul>
 *     <li><b>writeListObject</b>: 将给定的对象列表写入到指定路径的Excel文件中，并指定工作表名为"user"。</li>
 *     <li><b>readListObject</b>: 从指定路径的Excel文件中读取数据，根据提供的类型信息创建对象列表，并从名为"user"的工作表中读取数据。</li>
 * </ul>
 */
package com.example.mychess;

import com.alibaba.excel.EasyExcel;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

public class EXCEL implements Serializable {

    /**
     * 将一个对象列表写入到Excel文件中。所有对象需要是elementType类型的实例。
     *
     * @param lists 要写入Excel文件的对象列表
     * @param file Excel文件的完整路径
     * @param elementType 对象列表中元素的类型，用于确定列映射关系
     */
    public static <T> void writeListObject(List<?> lists, String file, Class<T> elementType) {
        EasyExcel.write(file, elementType).sheet("user").doWrite(lists);
    }

    /**
     * 从Excel文件中读取数据并转换为对象列表。返回的对象列表中的每个元素都是elementType类型的实例。
     *
     * @param file 需要读取的Excel文件的完整路径
     * @param elementType 要读取的数据所映射的目标对象类型
     * @return 返回一个由Excel文件内容映射生成的对象列表
     */
    public static <T> List<T> readListObject(String file, Class<T> elementType) {
        return EasyExcel.read(file).head(elementType).sheet("user").doReadSync();
    }
}
